﻿#pragma once
#include <dinput.h>
#include "Config.h"
#include "Trace.h"

class CInput
{
private:
	// The DirectInput object 
	LPDIRECTINPUT8 mDI;
	// The keyboard device 
	LPDIRECTINPUTDEVICE8 mKeyboard;

	// DirectInput keyboard state buffer 
	BYTE  mKeyStates[256];
	// Buffered keyboard data
	DIDEVICEOBJECTDATA mKeyEvents[KEYBOARD_BUFFER_SIZE];
	int mKeyUP, mKeyDown;
public:
	static CInput* Instance;

	CInput();
		
	int InitInput(HINSTANCE hInstance);

	int InitKeyboard(HWND hWnd);

	// Lấy trạng thái bàn phím có được kích hoạt hay không? Nếu không thì kích hoạt
	void ProcessKeyboard();

	//Update KeyState từ KeyEvents
	void Update();

	//Lấy trạng thái phím với "key"
	BYTE GetKeyState(int key) 
	{ 
		return mKeyStates[key]; 
	}

	// Kiểm tra xem có phải Key truyền vào được nhấn xuống hay không
	int IsKeyDown(int KeyCode);

	int GetKeyDown();
	int GetKeyUp();

	~CInput();
};

